﻿Imports Lourdes.BackEnd.View
Imports Infragistics.Win.UltraWinGrid
Imports Lourdes.BackEnd


Public Class ucProductosGridFactura

  Private WithEvents frmMerBuscar As frmProductosBuscar
  Public Event ProductoSeleccionado(ByVal pProducto As vProducto)
  Public Event MontoTotalActualizado(ByVal pMontoTotal As Double)
  Private _Productos As vLstProductos
  Private _ListaPrecioId As Integer?
  Public Event MercaderiaSelectorInitialize()
  Private _FilaActual As Infragistics.Win.UltraWinGrid.UltraGridRow
  Private _FireUpdateCellUpdate As Boolean = True

  Public Property ListaPrecioId() As Integer?
    Get
      Return _ListaPrecioId
    End Get
    Set(ByVal value As Integer?)
      _ListaPrecioId = value
      If frmMerBuscar IsNot Nothing And _ListaPrecioId.HasValue Then
        frmMerBuscar.ListaPrecioId = _ListaPrecioId
      End If
    End Set
  End Property

  Public Property Productos() As vLstProductos
    Get
      Return _Productos
    End Get
    Set(ByVal value As vLstProductos)
      _Productos = value
      CargarGrid()
    End Set
  End Property

  Public Sub New()

    ' Llamada necesaria para el diseñador.
    InitializeComponent()

    ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
    _Productos = New vLstProductos
    frmMerBuscar = New frmProductosBuscar
    'frmMerBuscar.ListaPrecioId = _ListaPrecioId

  End Sub

  Private Sub CargarGrid()
    Try
      With grdProductos
        VLstProductosBindingSource.DataSource = _Productos
        .DataSource = VLstProductosBindingSource
        .DataBind()
      End With
    Catch ex As Exception
      Utils.ManejoErrores(ex)
    End Try
  End Sub


  Private Sub ucProductosGridFactura_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    CargarGrid()
  End Sub

  Private Sub btnAgregar_Click(sender As System.Object, e As System.EventArgs) Handles btnAgregar.Click
    If _ListaPrecioId Is Nothing Then
      _ListaPrecioId = 1
    End If

    frmMerBuscar.GetProductoByFilters(_ListaPrecioId, String.Empty, String.Empty, _Productos, Me.ParentForm)

  End Sub

  Private Sub frmMerBuscar_RecargarGrillaProductos(pProductos As BackEnd.View.vLstProductos) Handles frmMerBuscar.RecargarGrillaProductos
    _Productos = pProductos
    CargarGrid()
    RaiseEvent MontoTotalActualizado(_Productos.Total)
  End Sub

  Private Sub grdProductos_ClickCellButton(sender As System.Object, e As Infragistics.Win.UltraWinGrid.CellEventArgs) Handles grdProductos.ClickCellButton
    Select Case e.Cell.Column.Key
      Case "Eliminar"
        e.Cell.Row.Delete(False)
        RaiseEvent MontoTotalActualizado(_Productos.Total)
      Case "Editar"
        frmMerBuscar.GetProductoByFilters(_ListaPrecioId, e.Cell.Row.Cells("MercaderiaNumero").Value,
                                          e.Cell.Row.Cells("Nombre").Value, _Productos, Me.ParentForm, True)
    End Select
  End Sub

  Private Sub ucProductosGridFactura_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    If Keys.F8 = e.KeyCode Then
      btnAgregar_Click(Nothing, Nothing)
    End If
  End Sub

  Public Sub SetMode(ByVal pTipoAbm As Enums.TipoABM)
    If pTipoAbm = Enums.TipoABM.Modificacion Or pTipoAbm = Enums.TipoABM.Baja Then
      With grdProductos.DisplayLayout
        .Override.AllowUpdate = Infragistics.Win.DefaultableBoolean.False
        .Bands(0).Columns("Editar").Hidden = True
        .Bands(0).Columns("Eliminar").Hidden = True
      End With
    ElseIf pTipoAbm = Enums.TipoABM.Alta Then
      With grdProductos.DisplayLayout
        .Override.AllowUpdate = Infragistics.Win.DefaultableBoolean.True
        .Bands(0).Columns("Editar").Hidden = False
        .Bands(0).Columns("Eliminar").Hidden = False
      End With

    End If
  End Sub

  Public Sub LimpiarUCProductos()
    _Productos = Nothing
    _Productos = New vLstProductos
    _ListaPrecioId = Nothing
    CargarGrid()
    '  grdProductos.Rows.AddRowModifiedByUser = True

  End Sub
End Class
